package com.carb.service;

import com.carb.dto.*;
import com.carb.entity.Item;
import com.baomidou.mybatisplus.extension.service.IService;
import com.carb.entity.ItemCategory;
import com.carb.enums.CommonStatus;
import com.carb.result.PageResult;
import com.carb.vo.ItemStockRecordVO;
import com.carb.vo.ItemVO;

import java.util.List;

/**
 * <p>
 * 物品管理 服务类
 * </p>
 *
 * @author XuChaoyang
 * @since 2025-01-18
 */
public interface IItemService extends IService<Item> {

    void addItem(ItemAddDTO itemAddDTO);

    PageResult<ItemVO> pageQuery(ItemPageQueryDTO itemPageQueryDTO);

    void updateStatus(Long id, CommonStatus status);

    ItemVO getItemById(Long id);

    void updateItem(ItemUpdateDTO itemUpdateDTO);

    void deleteItem(Long id);

    void addItemCategory(String itemCategoryName);

    PageResult<ItemCategory> pageQueryItemCategory(ItemCategoryPageQueryDTO itemCategoryPageQueryDTO);

    void updateItemCategoryStatus(Long id, CommonStatus status);

    ItemCategory getItemCategoryById(Long id);

    void updateItemCategory(ItemCategoryUpdateDTO itemCategoryUpdateDTO);

    void deleteItemCategory(Long id);

    List<ItemCategory> listItemCategory();

    void addItemStock(List<ItemStockUpdateDTO> itemStockUpdateDTOList);

    void reduceItemStock(List<ItemStockUpdateDTO> itemStockUpdateDTOList);

    PageResult<ItemStockRecordVO> pageQueryItemStockRecord(ItemStockRecordPageQueryDTO itemStockRecordPageQueryDTO);
}
